package neca.tmazo.modelo;

import neca.tmazo.datasets.Album;
import neca.tmazo.datasets.BBDDException;
import neca.tmazo.datasets.Dataset;
import neca.tmazo.datasets.Music;
import neca.tmazo.datasets.Song;
import neca.tmazo.vista.WindowItems;

/**
 * 
 * @author neca
 *
 * Ventana de la biblioteca del usuario actual (Las canciones o albumes que ha comprado)
 *
 */
public class VentanaModeloMiBiblioteca extends VentanaModelo {

	private Music[] userMusic;
	
	public VentanaModeloMiBiblioteca(Aplicacion app){
		super(app);
	}
	
	@Override
	public void onMenuItemSelected(int label, Dataset args) {
		switch(label){
			
		case WindowItems.MIBIBLIOTECA_BOTON_MUSICA:
			Music piezaSeleccionada = userMusic[Integer.valueOf(args.get(WindowItems.MIBIBLIOTECA_FORMULARIO_INDICEMUSICASELECCIONADA))];
			this.app.getPila().push(this); //Hacemos PUSH a la pila
			
				if (piezaSeleccionada instanceof Album) {
					// Es un album
					VentanaModeloAlbum ventanaAlbum = new VentanaModeloAlbum(this.app, (Album) piezaSeleccionada);
					this.app.setCurrentWindow(ventanaAlbum);
				} else {
					// Es una cancion
					VentanaModeloCancion ventanaCancion = new VentanaModeloCancion(this.app, (Song) piezaSeleccionada);
					this.app.setCurrentWindow(ventanaCancion);
				}
			break;
			
		case WindowItems.MIBIBLIOTECA_BOTON_ATRAS:
			VentanaModelo ventanaAtras = this.app.getPila().pop();
			this.app.setCurrentWindow(ventanaAtras);
			break;
		
		}
	}
	
	@Override
	public void init() {
		try{
			//Si hay que recargar la biblioteca (Ha habido cambios o aun no la habiamos cargado por primera vez) obtenemos nuestras
			//piezas musicales de la BD
			if(app.getReloadLibrary()){
				userMusic = app.getPersistencyFacade().purchased(this.app.getUser());
				this.app.setUserMusic(userMusic);
				app.setReloadLibrary(false);
			}
			//Si no, no nos comunicamos con la BD y las optenemos de app
			else userMusic=app.getUserMusic();
			
			this.app.getVistaFacade().openWindowMiBiblioteca(this, userMusic);
		} catch(BBDDException e) {
			this.app.getVistaFacade().showInfo(true, "Problemas conectando con el sistema de gestion de musica");
		}
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		
	}

}
